class Student:
    def __init__(self, name, gender):
        self.name = name
        self.__gender = gender  # 私有的实例属性

    # 使用装饰器,将方法转换成属性使用,只能查看值，不能修改
    @property
    def gender(self):  # 方法名与属性名相同
        return self.__gender

    # 将gender属性设置为可写属性，才可以修改值
    @gender.setter
    def gender(self, value):
        if value != '男' and value != '女':
            print('性别有误，已将性别默认设置为男')
            self.__gender = '男'
        else:
            self.__gender = value


stu = Student('丽丽', '女')
print(stu.name, '的性别是：', stu.gender)

# 尝试修改属性值
# stu.gender = '男'  # 报错property 'gender' of 'Student' object has no setter


stu.gender = '其他'
print(stu.name, '的性别是：', stu.gender)
